/*! \file classcode.h
	\author HiddenSeeker

	Describes a class code
 */
#include <vector>
#include "constanttable.h"
#pragma once
#define INVALID_CONVERT 0xFFFF
#define INVALID_CONSTANT 0xFFFF
class ClassCode
{
public:
//Common used data for class
	unsigned short MyName;
	unsigned short SuperClass;

	bool           HasConstructor;
	AttrInfo       MyConstructor;
	unsigned short ParentConstructor;
	
//Implemented interfaces
	std::vector<unsigned short> Interfaces;

//Fields used by root class
	bool       HasMain;                      //Whether we should create main
	AttrInfo   MainProc;                     //int main(String[]) signature
	unsigned short RootConstructorMethodRef; // Constructor for root method ref
	unsigned short RootProcMethodRef;        //Method ref for function that used by class
	unsigned short Convert;                  //If command line arguments that should point to Convert, otherwise NULL
	bool           PopBeforeExit;            //Whether we should pop execution before exit
	unsigned short Code;                     // Code class name shortcut
	inline ClassCode() {
	}
};
